package com.java.dao;

import com.java.bean.Courier;
import com.java.exception.DuplicateException;

import java.util.List;
import java.util.Map;

/**
 * 定义操作快递员表的规范
 */
public interface BaseCourierDao {

    /**
     * 控制台信息
     *
     * @return [{"size":XX,"day":XX}]
     */
    Map<String, Integer> console();

    /**
     * 列出一定数量的快递员信息
     *
     * @param offset 偏移量
     * @param pageNumber 数量
     * @return 快递员集合
     */
    List<Courier> listCourier(int offset, int pageNumber);

    /**
     * 新增快递员
     *
     * @param courier 快递员信息 要求传入：name phone identification password email regtime logintime
     * @return 生成的键
     */
    int insert(Courier courier) throws DuplicateException;

    /**
     * 根据快递员手机号码获取快递员信息
     *
     * @param cphone 快递员手机号码
     * @return 快递员信息
     */
    Courier getCourierByPhone(String cphone);

    /**
     * 更新快递员信息
     *
     * @param id 快递员id
     * @param courier 新的快递员信息 要求传入：name phone identification password dispatches email
     * @return 影响行数
     */
    int update(int id, Courier courier) throws DuplicateException;

    /**
     * 删除快递员信息（假删除）
     *
     * @param id 快递员id
     * @return 影响行数
     */
    int delete(int id);

    /**
     * 快递员增加一个派件数
     *
     * @param id 快递员id
     * @return true 成功 false 失败
     */
    boolean addDispatches(int id);

    /**
     * 快递员登录
     *
     * @param name 姓名
     * @param password 密码
     * @return 成功返回快递员信息， 否则返回null
     */
    Courier login(String name, String password);


    Courier getCourierByEmail(String email);

}
